package com.doctcloud.common.webservice.config;

import com.doctcloud.common.webservice.utils.WebserviceClientUtils;
import com.doctcloud.common.webservice.utils.WebserviceServerUtils;
import org.apache.cxf.bus.spring.SpringBus;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * WebService自动配置类（Spring Boot启动时自动加载）
 *
 * @author doctcloud samula
 */
@Configuration
@EnableConfigurationProperties(WebserviceProperties.class) // 启用配置属性类
public class CxfAutoConfig {

    /**
     * 配置CXF Bus（CXF核心总线，默认Bean名：cxfBus）
     */
    @Bean(name = "cxfBus")
    @ConditionalOnMissingBean // 避免重复创建
    public SpringBus cxfBus() {
        return new SpringBus();
    }

    /**
     * 注册客户端工具类（依赖注入用）
     */
    @Bean
    @ConditionalOnMissingBean
    public WebserviceClientUtils webserviceClientUtils() {
        return new WebserviceClientUtils();
    }

    /**
     * 注册服务端工具类（依赖注入用）
     */
    @Bean
    @ConditionalOnMissingBean
    public WebserviceServerUtils webserviceServerUtils() {
        return new WebserviceServerUtils();
    }

    /**
     * （可选）默认Endpoint配置（如需自动发布默认服务，可在此添加）
     * 示例：发布一个测试服务
     */
    /*
    @Bean
    public Endpoint testEndpoint(WebserviceServerUtils serverUtils) {
        return serverUtils.publishService(new TestWebServiceImpl(), "/test");
    }
    */
}